package core.java;

import java.io.IOException;
import java.util.ListIterator;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * @Auther: ssk
 * @Date: 2019/1/17 16:58
 * @Description:
 * java -verbose 类加载过程
 */
public class Log {
    private final static Logger logger=Logger.getLogger("loggerstudy");

    /**
     *
     * @param args
     *
     *logger 7 个级别 默认只显示前三个,显示其他的需要配置 配置文件目录 jre/lib/loggering.properties
     * STSEVERE 严重
     * WARNING 	警告
     * INFO 	信息
     * CONFIG 	配置
     * FINE 	详细
     * FINER 	较详细
     * FINEST 	非常详细
     * ALL 	开启所有级别日志记录
     * OFF 	关闭所有级别日志记录
     *
     * java -Djava.util.logging.config.file = confifFielName ClassName
     * 或者 在main调用System.setProperty("java.util.logging.config.file","filepath")  好像不正确.....
     * 原因日志管理器是在vm启动时初始化,配置这个会调用LogMnaager.readConfiguration()初始化
     *
     */
    public static void main(String args[]) throws IOException {
       //关闭父处理器
        logger.setUseParentHandlers(false);
        ConsoleHandler consoleHandler = new ConsoleHandler();
        logger.setLevel(Level.ALL);
        consoleHandler.setLevel(Level.ALL);
        logger.addHandler(consoleHandler);
        logger.severe("logger severe 严重信息");
        logger.warning("logger warning 警告信息");
        logger.info("logger info 普通信息");
        logger.config("logger config 配置信息");
        logger.fine("logger fine 详细信息");
        logger.finer("logger finer 较详细信息");
        logger.finest("logger finest 非常详细信息");
        //自定义heander
        //  %h user.home
        //  %t temo目录
        //  %u 唯一编号
        //  %g 为循环日志生成数值
        FileHandler fileHandler = new FileHandler("%h/java%u.log");
        fileHandler.setEncoding("utf-8");
        fileHandler.setLevel(Level.ALL);
        logger.addHandler(fileHandler);
        logger.log(Level.INFO,"fileLogger",new NullPointerException());
        logger.logp(Level.WARNING,Log.class.getName(),"TEST","logger一堆","param");
        // 打印finest信息 进入函数 退出函数
        logger.entering(Log.class.getName(),"TEST","param");
        logger.exiting(Log.class.getName(),"TEST",5);
    }
}
